package presentacion;
//formulario de busqueda de articulos
import java.awt.EventQueue;

import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;

import static biblioteca.FuncionesDeVentanas.*;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.*;

public class FormBusquedaDeArticulo extends JInternalFrame {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	final  String CONTROLADOR ="com.mysql.jdbc.Driver";
	final  String URL_BASEDATOS = "jdbc:mysql://localhost/pos";
	
	Vector<Object> arregloTemporal;
	 	
	private JTextField textFieldCampoBuscarArticulo;
	private JTable table;
	private JComboBox comboBoxBuscarArticulo;
	private JButton btnRealizarBusquedaArticulo;
	private JButton btnRetornar;
	
	private String consulta = "SELECT * FROM articulos";
	private Connection cn;
	private String consultaEspecifica;
	
	private RegistroDeArticulo ventanaPadre;
	
	

	/* *
	 * Launch the application.
	 * /
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try 
				{
					BusquedaDeArticulo frame = new BusquedaDeArticulo();
					frame.setVisible(true);
				} 
				catch (Exception e) 
				{
					e.printStackTrace();
				}
			}
		});
	}*/

	/**
	 * Create the frame.
	 */
	public FormBusquedaDeArticulo(RegistroDeArticulo padre) {
		setClosable(true);
		setTitle("Buscar Articulo");
		setBounds(100, 100, 582, 380);
		getContentPane().setLayout(null);
		
		ventanaPadre = padre;
		quitarBotonEsquinaIzquierdaJInternalFrame(this);
		
		JLabel lblBuscarPor = new JLabel("Buscar Por:");
		lblBuscarPor.setBounds(24, 32, 82, 16);
		getContentPane().add(lblBuscarPor);
		
		comboBoxBuscarArticulo = new JComboBox();
		comboBoxBuscarArticulo.setModel(new DefaultComboBoxModel(new String[] {"Codigo", "Descripcion"}));
		comboBoxBuscarArticulo.setBounds(22, 47, 112, 26);
		getContentPane().add(comboBoxBuscarArticulo);
		
		JLabel lblIngresar = new JLabel("Ingresar Campo");
		lblIngresar.setBounds(207, 32, 102, 16);
		getContentPane().add(lblIngresar);
		
		textFieldCampoBuscarArticulo = new JTextField();
		textFieldCampoBuscarArticulo.setBounds(203, 46, 180, 28);
		getContentPane().add(textFieldCampoBuscarArticulo);
		textFieldCampoBuscarArticulo.setColumns(10);
		
		btnRealizarBusquedaArticulo = new JButton("Buscar");
		btnRealizarBusquedaArticulo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				if (comboBoxBuscarArticulo.getSelectedIndex() == 0) 
				{
					consultaEspecifica = "SELECT * FROM articulos WHERE id_articulo LIKE'%" + textFieldCampoBuscarArticulo.getText() + "%'";
					cargarListaArticulosPor(consultaEspecifica);
				}
				else
				{
					if (comboBoxBuscarArticulo.getSelectedIndex() == 1) 
					{
						consultaEspecifica = "SELECT * FROM articulo WHERE descripcion LIKE'%" + textFieldCampoBuscarArticulo.getText() + "%'";
						cargarListaArticulosPor(consultaEspecifica);
					}
				}		
			}
		});
		btnRealizarBusquedaArticulo.setBounds(407, 46, 90, 28);
		getContentPane().add(btnRealizarBusquedaArticulo);
		
		table = new JTable();

		JScrollPane scrollPane = new JScrollPane(table);
		scrollPane.setBounds(24, 85, 526, 216);
		getContentPane().add(scrollPane);
		
		JButton btnAgregarArticulo = new JButton("Agregar Articulo");
		btnAgregarArticulo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				seleccionarRegistro();
				ventanaPadre.bloquearCampos();
				ventanaPadre.botonesEvento();
			}
		});
		btnAgregarArticulo.setBounds(115, 310, 120, 28);
		getContentPane().add(btnAgregarArticulo);
		
		JButton btnRetornar = new JButton("Retornar");
		btnRetornar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				dispose();
			}
		});
		btnRetornar.setBounds(310, 308, 90, 28);
		getContentPane().add(btnRetornar);

		cargarListaArticulos();
	}
	
//para desplegar los articulos en la tabla al inicio del formulario
	void cargarListaArticulos()          
	{
        DefaultTableModel modelo= new DefaultTableModel();
        String []Titulos = {"CODIGO","DESCRIPCION","PRECIO DE COSTO","UTILIDAD","PRECIO DE VENTA","ITBIS"};
        modelo.setColumnIdentifiers(Titulos);
        this.table.setModel(modelo);
        
        try 
        {
        	try 
        	{
        		Class.forName(CONTROLADOR);
			} 
        	catch (ClassNotFoundException e) 
        	{
				e.printStackTrace();
			}
       
            String []registros= new String[6];
           
            cn  = DriverManager.getConnection(URL_BASEDATOS, "root", "");
			Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(consulta);
            
            while(rs.next())
            {
                registros[0]=rs.getString("id_articulo");
                registros[1]=rs.getString("descripcion");
                registros[2]=rs.getString("precio_costo");
                registros[3]=rs.getString("utilidad");
                registros[4]=rs.getString("precio_venta");	                
                registros[5]=rs.getString("ITBIS");
                modelo.addRow(registros);
                                
            }
            table.setModel(modelo);
        }
        catch (SQLException ex)
        {
            Logger.getLogger(FormBusquedaDeArticulo.class.getName()).log(Level.SEVERE, null, ex);
        }
	}
	
	//para realizar una busqueda selectiva
	void cargarListaArticulosPor(String consulta)
	{
		DefaultTableModel modelo= new DefaultTableModel();
        String []Titulos = {"CODIGO","DESCRIPCION","PRECIO DE COSTO","UTILIDAD","PRECIO DE VENTA","ITBIS"};
        modelo.setColumnIdentifiers(Titulos);
        this.table.setModel(modelo);
        
        try 
        {
        	try 
        	{
        		Class.forName(CONTROLADOR);
			} 
        	catch (ClassNotFoundException e) 
        	{
				e.printStackTrace();
			}
       
            String []registros= new String[6];
           
            cn = DriverManager.getConnection(URL_BASEDATOS, "root", "");
			Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(consulta);
            
            while(rs.next())
            {
            	registros[0]=rs.getString("id_articulo");
                registros[1]=rs.getString("descripcion");
                registros[2]=rs.getString("precio_costo");
                registros[3]=rs.getString("utilidad");
                registros[4]=rs.getString("precio_venta");	                
                registros[5]=rs.getString("ITBIS");
                modelo.addRow(registros);                  
            }
            table.setModel(modelo);
        }
        catch (SQLException ex)
        {
            Logger.getLogger(FormBusquedaDeArticulo.class.getName()).log(Level.SEVERE, null, ex);
        }
	}
	
	//funcion para seleccionar articulo de la tabla a mostrar...
	public  void seleccionarRegistro() 
	{
		int fila;
		fila =  table.getSelectedRow();
		if (fila == -1)
		{
			JOptionPane.showMessageDialog(null, "Favor selecionar una fila");
		}
		else
		{		
			String codigoArticulo = "" + table.getValueAt(fila, 0);
			String descripcionDelArticulo = "" + table.getValueAt(fila, 1);
			String precioDeCosto = "" + table.getValueAt(fila, 2);
			String utilidad = "" + table.getValueAt(fila, 3);
			String precioDeVenta = "" + table.getValueAt(fila, 4);
			String itbis = "" + table.getValueAt(fila, 5);
			
			ventanaPadre.cargarDatosBusqueda(codigoArticulo,descripcionDelArticulo,precioDeCosto,utilidad,precioDeVenta,itbis);

			this.dispose();
		}
	}
}